iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
自我挑戰組

Practice again& again.系列 第 25

Android - 建立 ViewModel

  • 分享至 

  • xImage
  •  

app/build.gradle 引入 Dependency

dependencies {
    ...
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
    ...
}

建立 ViewModel

  • 右鍵專案目錄 ->「New」->「Kotlin Class/File」-> 自行命名(此處以 HomeViewModel 為例)
  • 繼承 ViewModel
  • init {}:初始化內容
class HomeViewModel: ViewModel() {
    ...
    init {
        ...
    }
}

建立 AndroidViewModel

  • 若需使用 ViewModel 傳遞 context 的情況,可斟酌使用 AndroidViewModel
class HomeAndroidViewModel(val context: Application) : AndroidViewModel(context) {
...
}

於 Activity 呼叫 ViewModel

private val homeViewModel: HomeViewModel by viewModels()

ViewModel 連結於 Activity 的生命週期

  • ViewModel 初始化時機:當 Activity 第一次呼叫 ViewModel 時,該 ViewModel 被初始化產生新的實體;當 Activity configuration change 後(比如旋轉螢幕)再呼叫 ViewModel時,會取得同樣的實體。當Activity 被銷毀時,此 ViewModel-Activity Pair 也同時消失。
時間點 旋轉螢幕前 旋轉螢幕 旋轉螢幕後
Activity MainActivity[實體A] - MainActivity[新的實體B]
兩者Pair與否 v x v
ViewModel HomeViewModel[實體1] HomeViewModel[實體1] HomeViewModel[實體1]

上一篇
Android - Fragment 互動
下一篇
Android - Compose UI 自訂樣式
系列文
Practice again& again.30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言